import {defineStore} from 'pinia'
import {ref, reactive} from 'vue'

export const useCommonStore = defineStore('common', () => {
    // state
    const token = ref(sessionStorage.getItem('token') || '') // 初始化 token

    // 用户信息
    // 获取本地存储的用户信息，如果没有则初始化为空对象
    const localUserInfo = JSON.parse(sessionStorage.getItem('userInfo')) || {
        username: '', // 用户名
        avatar: '', // 头像
        uid: '' // 用户 ID
    }
    const userInfoCommon = reactive(localUserInfo)


    // action 定义修改 state 的方法
    function updateUserInfo(user) { // 更新用户信息
        userInfoCommon.username = user.username // 更新用户名
        userInfoCommon.avatar = user.avatar // 更新头像
        userInfoCommon.uid = user.uid // 更新用户 ID
    }

    // 消息通知
    const message = ref(0) // 消息通知
    const updateMessage = (newMessage) => { // 修改消息通知
        message.value = newMessage // 修改消息通知
    }

    // 返回一个对象，包含所有的状态和动作
    return {token, userInfoCommon, updateUserInfo, message, updateMessage}
})